// pop
// 参数：无参数
// 作用：删除数组最后一位
// 返回值：删除的值
// 例如：
// const arr = ['a', 'b', 'c']
// arr.pop()
// console.log(arr) // [ 'a', 'b' ]

// const res = arr.pop()
// console.log(arr) // [ 'a' ]
// console.log(res) // b

// forEach
// 参数：回调函数
// 回调函数的参数： item（当前项的值） index（当前项的下标） arr（当前数组）
// 作用：循环数组，作用等同于 for 循环，本身不改变数组的值
// 返回值：无返回值
// 例如：
// const arr = ['a', 'b', 'c']
// const res = arr.forEach((item, index, arr) => {
//   console.log(item) // a  b  c
// })
// console.log(res) // undefined

// join
// 参数：要分割的符号
// 作用：分隔数组
// 返回值：目标字符串
// 例如：
// const arr = ['a', 'b', 'c']
// const res = arr.join('&')
// console.log(res) // a&b&c

// indexOf
// 参数：需要查找的值
// 作用：查找数组中有没有目标项
// 返回值：有目标值返回目标值索引，无目标值返回 -1
// 例如：
// const arr = ['a', 'b', 'c']
// const res1 = arr.indexOf('a')
// const res2 = arr.indexOf('d')
// console.log(res1, res2) // 0 -1

// shift
// 参数：无参数
// 作用：删除第一项元素
// 返回值：返回删除元素的值
// 例如：
// const arr = ['a', 'b', 'c']
// const res = arr.shift()
// console.log(arr) // [ 'b', 'c' ]
// console.log(res) // a

// sort
// 参数：[函数] （用来规定排序，默认升序）
// 作用：删除第一项元素
// 返回值：返回删除元素的值
// 例如：
// const arr = [1, 2, 3, 6, 5, 4]
// const res1 = arr.sort()
// console.log(res1) // [ 1, 2, 3, 4, 5, 6 ]
// const res2 = arr.sort((a, b) => b - a)
// console.log(res2) // [ 6, 5, 4, 3, 2, 1 ]

// concat
// 参数：值或数组
// 作用：连接多个数组
// 返回值：返回连接好的新数组
// 例如：
// const arr1 = [1, 2, 3]
// const arr2 = [4, 5]
// const arr3 = 6
// const res = arr1.concat(arr2, arr3)
// console.log(res) // [ 1, 2, 3, 4, 5, 6 ]

// reduce
// 参数：回调函数 回调函数的参数：total（初始值） item（当前元素） [index]（当前元素的索引） [arr]（当前数组）
// 作用：数组求和
// 返回值：数组的和
// 例如：
// const arr = [1, 2, 3]
// const res = arr.reduce((total, item) => total + item)
// console.log(res) // 6

// filter
// 参数：回调函数 回调函数的参数：item（当前元素） [index]（当前元素的索引） [arr]（当前数组）
// 作用：数组筛选
// 返回值：筛选完毕的新数组
// 例如：
// const arr = [1, 2, 3]
// const res = arr.filter((item) => item >= 2)
// console.log(res) // [ 2, 3 ]

// some
// 参数：回调函数 回调函数的参数：item（当前元素） [index]（当前元素的索引） [arr]（当前数组）
// 作用：数组筛选
// 返回值：有一个满足就 true，反之 false
// 例如：
// const arr = [1, 2, 3]
// const res = arr.some((item) => item >= 2)
// console.log(res) // true

// every
// 参数：回调函数 回调函数的参数：item（当前元素） [index]（当前元素的索引） [arr]（当前数组）
// 作用：数组筛选
// 返回值：有一个不满足就 true，反之 false
// 例如：
// const arr = [1, 2, 3]
// const res = arr.every((item) => item >= 2)
// console.log(res) // false

// res
// 参数：回调函数 回调函数的参数：item（当前元素） [index]（当前元素的索引） [arr]（当前数组）
// 作用：数组处理
// 返回值：处理好的新数组
// 例如：
// const arr = [1, 2, 3]
// const res = arr.map((item) => ++item)
// console.log(res)

// unshift
// 参数：一个或多个元素
// 作用：在数组开头添加元素
// 返回值：添加完成的数组长度
// 例如：
// const arr = ['a', 'b', 'c']
// const res = arr.unshift('d', 'e')
// console.log(arr) // [ 'd', 'e', 'a', 'b', 'c' ]
// console.log(res) // 5

// reverse
// 参数：无参数
// 作用：颠倒数组
// 返回值：颠倒完毕的数组
// 例如：
// const arr = ['a', 'b', 'c']
// const res = arr.reverse()
// console.log(arr) // [ 'c', 'b', 'a' ]
// console.log(res) // [ 'c', 'b', 'a' ]

// splice
// 参数：index（删除或添加元素的索引） [num]（删除多少元素） [item]（要添加的元素,可以为多个）
// 作用：对数组删除或添加元素
// 返回值：删除的元素的数组，没有则返回空数组
// 例如：
const arr = ['a', 'b', 'c']
const res = arr.splice(1, 1, 'd', 'e')
console.log(arr) // [ 'a', 'd', 'e', 'c' ]
console.log(res) // [ 'b' ]
